Skip to content

feat: pre-release update channel, safe mode crash protection, and pipeline backup - #43

Open
Horuse wants to merge 2 commits into
mainfrom
feat/beta-channel-and-rollback-safety
Open

feat: pre-release update channel, safe mode crash protection, and pipeline backup#43
Horuse wants to merge 2 commits into
mainfrom
feat/beta-channel-and-rollback-safety

Conversation

@Horuse

@Horuse Horuse commented Sep 10, 2026

Copy link
Copy Markdown
Owner

What does this PR do?

Prepares Splitwave for v1.2.0 testing and public release with rollback safety, crash protection, and an opt-in pre-release update channel:

  1. Pre-release Update Channel (Settings -> Updates):

    • Adds "Receive pre-release updates (Beta / RC)" toggle in Settings.
    • When enabled, the in-app updater resolves the latest pre-release endpoint (-rc, -beta, -alpha) from the GitHub Releases API instead of only stable releases.
    • Displays a distinct PRE-RELEASE badge on the update dialog when targeting pre-release builds.
    • Automatically marks releases as prerelease in GitHub Actions if the git tag contains -rc, -beta, or -alpha.
  2. Automatic Pre-1.2.0 Pipeline Backup & Downgrade Safety:

    • Rust backend automatically snapshots pipelines.json to pipelines.backup-v1.json on app startup if the backup does not already exist.
    • Preserves backward compatibility for fileRecording nodes by syncing allowOverwrite = (mode === 'overwrite') on save and during migrations, allowing seamless rollback to v1.1.0 without losing overwrite intent.
  3. Safe Mode Crash Loop Protection:

    • Sequences error handler initialization (take_crash_reports) before audio pipeline auto-activation on startup.
    • If the previous run ended in a crash or audio boot failure, audioStore.autoActivateOnLaunch() skips auto-starting the pipeline to prevent boot crash loops.
    • Displays an amber Safe Mode alert banner situated directly beneath the header
    • Error modal displays a prominent SAFE MODE indicator explaining that auto-start was disabled.
  4. Dev Tools:

    • Added triggers to test "Safe Mode (simulate)" and "Pre-release update available" alongside existing debug options.

Why is this the right approach?

  • Pre-release channel: Allows testing v1.2.0-rc builds with early testers directly through the updater without forcing manual GitHub asset downloads or affecting stable users.
  • Automatic backup: Backing up pipelines.json in Rust at startup before any frontend JavaScript or migration code runs guarantees preset preservation even if an unexpected edge case fails during initial load.
  • Safe Mode: Startup crash loops (e.g., from unplugged hardware or crashing audio drivers) are prevented without clearing the user's saved pipeline configuration.

Checklist

  • Diff is limited to the change — no unrelated edits
  • bun run check passes (0 errors)
  • cargo check --manifest-path src-tauri/Cargo.toml passes
  • Generated TS types are committed with the Rust change (if any)
  • No RT audio path violations (no allocations, locks, or syscalls in audio callbacks or DSP worker)

Platform coverage

  • Developed on: macOS
  • Tested on: macOS (aarch64)
  • What I did to test:
    • Verified pre-release updater endpoint resolution and PRE-RELEASE modal badge.
    • Verified automatic backup creation of pipelines.backup-v1.json in app data directory.
    • Verified downgrade compatibility with fileRecording node mode/overwrite sync.
    • Tested Safe Mode recovery flow on native process crash / panic and simulated Safe Mode trigger.
    • Verified layout responsiveness across all routes (+page, pipelines/[id], settings, virtual-devices, wiki).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant